﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization;

namespace Teenus {
    [DataContract]
    public class EntitySoodustus {

        private int id;
        [DataMember]
        public int Id {
            get { return id; }
            set { id = value; }
        }

        private String liik;
        [DataMember]
        public String Liik {
            get { return liik; }
            set { liik = value; }
        }

        private Double suurus;
        [DataMember]
        public Double Suurus {
            get { return suurus; }
            set { suurus = value; }
        }

        private String yhik;
        [DataMember]
        public String Yhik {
            get { return yhik; }
            set { yhik = value; }
        }


        // override object.Equals
        public override bool Equals(object obj) {
            if (obj == null || GetType() != obj.GetType()) {
                return false;
            }
            if (this == obj) {
                return true;
            }

            EntitySoodustus s = (EntitySoodustus)obj;

            if (liik == null || s.liik == null) {
                if (!(liik == null && s.liik == null)) {
                    return false;
                }
            }
            else if (!liik.Equals(s.liik)) {
                return false;
            }

            if (yhik == null || s.yhik == null) {
                if (!(yhik == null && s.yhik == null)) {
                    return false;
                }
            }
            else if (!yhik.Equals(s.yhik)) {
                return false;
            }

            if (id.Equals(s.id) && suurus.Equals(s.suurus)) {
                return true;
            }
            else {
                return false;
            }
        }


        /// <summary>
        /// Võrdleb kõiki teisi välju peale ID.
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public bool EqualsWithoutId(object obj) {
            if (obj == null || GetType() != obj.GetType()) {
                return false;
            }
            if (this == obj) {
                return true;
            }

            EntitySoodustus s = (EntitySoodustus)obj;

            if (liik == null || s.liik == null) {
                if (!(liik == null && s.liik == null)) {
                    return false;
                }
            }
            else if (!liik.Equals(s.liik)) {
                return false;
            }

            if (yhik == null || s.yhik == null) {
                if (!(yhik == null && s.yhik == null)) {
                    return false;
                }
            }
            else if (!yhik.Equals(s.yhik)) {
                return false;
            }

            if (suurus.Equals(s.suurus)) {
                return true;
            }
            else {
                return false;
            }
        }


        // override object.GetHashCode
        public override int GetHashCode() {
            int hash = 23;
            hash = hash * 37 + id;
            hash = hash * 37 + (int)suurus;
            if (liik != null) {
                hash = hash * 37 + liik.GetHashCode();
            }
            if (yhik != null) {
                hash = hash * 37 + yhik.GetHashCode();
            }

            return hash;
        }

    }
}